Computers at businesses or universities are usually networked together. A typical computer network includes a server computer connected to a number of client computers. In a conventional computer network, the server computer provides large disk storage and/or software applications to which the client computers have access. The client computers can be stand-alone computers or “diskless” computers. A stand-alone computer has necessary software (e.g., Operating Systems (OS), user applications, and the like) and hardware components (e.g., hard disks) to operate disconnected from the server computer, if needed. A diskless computer does not have any local hard disk and uses software applications and user data residing on the server computer. Hence, diskless client computers cannot operate without a server computer.
A computer network with only stand-alone client computers is referred to as a thick client network (or “fat” client network), and a network with only diskless computers is called a thin client network. Regardless whether networks are populated with thin or thick client computers, the server and client computers are required to be properly maintained. For instance, the Operating System needs to be modified or updated with new versions, and user data need to be backed up to recover from catastrophic failures (e.g., loss of a client computer).
In a typical thick client network 101 illustrated in FIG. 1 as having a server computer 103 and a number of client computers 105-107, each client computer may use different versions of the Operating System or have some local changes made thereto. For instance, the configuration file for each client computer, a file that describes the devices, optional features, communications parameters, and programs installed on the client computer, is usually modified for each client computer.
When the number of client computers is small and the client computers are configured identically, it is a relatively simple task to maintain them. This is because the client computers most likely have an identical Operating System and, hence, updating it would require only one installation procedure. Recovering from catastrophic failures would also be simple because the identical Operating System needs to be reloaded to a new computer (in the case of replacing a lost computer) and the user data can then be restored from a backup storage device. However, typical networks nowadays include numerous client computers and Operating Systems that are different. An example of such a network is illustrated in FIG. 1, in which a client computer 105 has an Operating System that is “v. 1.2.a” with some local changes, while a client computer 107 has an Operating System that is “v. 1.n.x” with its own local changes. In these types of networks, maintaining the computers becomes an inefficient and time-consuming task because each installation of a new version of the Operating System requires selecting correct installation script options based on each computer's hardware configuration and past upgrade history. Installing a new version of the Operating System often fails due to these requirements.
For this and other reasons, the thin client networks have been recognized as providing solutions to some of the shortcomings of thick client networks. FIG. 2 illustrates an example thin client network 201 that includes a number of client computers 205-207 and a server computer 203. Because the client computers of the thin client network do not have their own local memory disks, there is no software program stored on the client computers. All software applications and user data reside on the server computer. Maintaining such a network is simple compared with the thick client network because there is only one set of software applications to be maintained (i.e., the ones on the server computer). Recovering from catastrophic failures of client computers is also simple because all software applications and user data are located on the server computer.
However, thin client networks have some shortcomings of their own. First, thin client computers completely depend on the server computer. Hence, when the server computer (or the network) fails or slows down due to heavy load or network traffic, the client computers can be rendered inoperable. Second, as the number of client computers increases, the network communication becomes heavily loaded and available bandwidth can be depleted. Also, the server computer can be stretched to its performance limits due to demands from the large number of client computers. This may require expensive upgrades and maintenance on network devices and the server computer.